package com.wander.designStructural.decorator;

/**
 * @Author : WDYin
 * @Date : 2021/1/19
 * @Desc :为什么不直接继承ConcreteComponent，或者直接在另一个Component的实现类中实现呐？
 *      在复杂的大型项目中，同一级下的兄弟类通常有很多。当你有五个甚至十个ConcreteComponent时，
 *      再想要为每个类都加上“先吃饭，再听歌”的效果，就要写出五个子类了。毫无疑问这是不合理的。
 *      装饰器模式在不影响各个ConcreteComponent核心价值的同时，添加了他特有的装饰效果，
 *      具备非常好的通用性，这也是他存在的最大价值。
 */
public class Client {
    public static void main(String[] args) {
        Component component = new ConcreteDecorator(new ConcreteComponent());
        Component component1 = new ConcreteDecorator(new ConcreteComponent1());
        component.music();
        component1.music();
    }
}
